A computer system may include applications that are released and able to run on various combinations of database systems, operating systems, virtualization layers and cloud services, such as Infrastructure-as-a-Service (“IaaS”). Various infrastructure components of the computer system may be instrumented and monitored to help keep business processes up and running. While a snapshot of current monitoring data may provide a relatively good impression of current system behavior, monitoring data history for a relatively long period of time may better help determine how the behavior of the computer system changes over time. For example, a monitoring data history of more than one year may be maintained, which might add up to several 100 Giga-Bytes (“GB”) of raw data for various elements of the computer system. Moreover, a centralized monitoring solution may store monitoring data history for many different computer systems, which will further increase the amount of data that needs to be stored, and may also cause replicated events and alerts to occur. Keeping such a substantial amount of data may be expensive and increase the Total Cost of Ownership (“TCO”) of computer systems. Further, attempting to install monitoring code locally at each computer system may be impractical if there is resistance to the idea of updating the monitoring code relatively frequently (to support changes that are made to database versions, operating systems, hardware, etc.). Still further, many different topologies may need to be supported, and an efficient and accurate method of doing so may be desired.